<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
        Object 结构提供了“字符串—值”的对应，Map 结构提供了“值—值”的对应，
        map的键值不仅仅可以是字符串 可以是各种类型
         */

        const m = new Map()
        const obj = { name: 'lin' }
        //  obj对象当成key值
        m.set(obj, 'obj键对应的值')
        console.log(m.get(obj));



        /*
        3.map构造函数传参 传一个表示键值对的数组
         */
        const map = new Map([
            ['name', '张三'],
            ['title', 'Author']
        ]);

        map.size // 2
        map.has('name') // true
        map.get('name') // "张三"
        map.has('title') // true
        map.get('title') // "Author"


        /* 
            常用api
         */
        console.log(map.size, 'size');
        // 设置键值，并且返回整个map
        console.log(map.set(true, 222).set(0, '222'));
        // 拿到键对应的值，没有则返回undefined
        console.log(map.get(true));
        /* 
      delete删除键 返回成功true 或者false 
      has是否包含键
        */
        m.delete(obj)
        console.log(m.has(obj));
        // clear清除map所有成员 没有返回值
        m.clear()


        /* 遍历api */
        // foreach
        const m2 =  new Map([[true,'1'],[22,'false']])
       m2.forEach((value,key,map)=>{
           console.log(value+''+key);
       })
    //    values 
       console.log('values',m2.values());
       console.log('keys',m2.keys());
       console.log('entry',m2.entries());



       
       


    </script>
</body>

</html>